﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SRP_LibBusinessEntity;
using SRP_LibBusinessRules;
using SRPCENTRIA.Code;
using System.Configuration;

namespace SRPCENTRIA.ws_appPrivada
{
    public partial class wCargaArchivos : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) 
            {
                if (Session["Usuario"] != null)
                {
                    EUsuario usuario = (EUsuario)Session["Usuario"];
                    ((Label)Master.FindControl("lblusuario")).Text = usuario.VUSU_NOMBRES;
                }
                if (Request.QueryString["idproveedor"] == null) 
                {
                    Response.Redirect("wBusqProveedor.aspx?solicitud=" +  Constanst.Solicitud_AdjuntarArchivo);
                }
                CargarHistoricoEstados(Request.QueryString["idproveedor"].ToString());
                CargarTipoArchivos();
                CargarEmpresasOrigen();
                PersonalizarPagina();
            }

        }

        protected void btnAdjuntar_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidarCampos())
                {
                    AdjuntarArchivo();
                    ScriptRedirect("Se adjuntó el archivo con éxito","1");
                    //EscribirScript("Se adjuntó el archivo con éxito");
                    //Response.Redirect("wBusqProveedor.aspx?solicitud=" + Constanst.Solicitud_AdjuntarArchivo);
                }
                
            }
            catch (Exception ex)
            {
                EscribirScript("Ocurrió un error en el Proceso");
            }
            
        }

        #region Custom Methods

        private void PersonalizarPagina() 
        {
            EUsuario usuario = (EUsuario)Session["Usuario"];
            if (usuario.PK_IPER_IDPERFIL == 3) 
            {
                pnhomologador.Visible = true;
                ddlorigenarchivo.Enabled = false;
            }
        }

        private bool ValidarCampos() 
        {

            bool result = true;
            if (ddltipoarchivo.SelectedIndex <= 0) { result = false; EscribirScript("Identifique el tipo de archivo que se esta cargando al sistema"); return false; }
            if (txtnombrearchivo.Text == "") { result = false; EscribirScript("Ingrese un nombre para el archivo a cargar"); return false; }
            if (fuUbicacion.FileName == "") { result = false; EscribirScript("Seleccione el archivo que desea cargar"); return false; }
            if (txtfechacaducidad.Text == "__/__/____") { result = false; EscribirScript("Ingrese la fecha de Caducidad"); return false; } 
            try 
            {
                DateTime.Parse(txtfechacaducidad.Text);
            }
            catch (Exception ex) { EscribirScript("Fecha de caducidad no válida"); result = false; }

            if (fuUbicacion.FileBytes.Length > 3145728) { result = false; EscribirScript("Archivo demasiado grande solo se permite hasta 3 Mb"); }


            //Personalizacion de los Botones
            NProveedor proveedor = new NProveedor();
            System.Data.DataTable dt = proveedor.HistoricoEstadosProveedor(txtnumerodocumento.Text);
            int estadoproveedor = int.Parse(dt.Rows[0].ItemArray[dt.Columns.IndexOf("id")].ToString());
            if (estadoproveedor == Constanst.ProveedorEstable) 
            {
                if (ddltipoarchivo.SelectedValue != "1") 
                {
                    EscribirScript("No se puede adjuntar este tipo de archivo al Proveedor, verificar el Estado");
                    return false;
                }
            }
      
            return result;
        }

        private void CargarTipoArchivos() 
        {
            NTipoArchivo archivo = new NTipoArchivo();
            ddltipoarchivo.DataSource = archivo.ListarTipoArchivos();
            ddltipoarchivo.DataTextField = "VTIP_DESC_TIPO_ARCHIVO";
            ddltipoarchivo.DataValueField = "ITIP_ID_TIPO_ARCHIVO";
            ddltipoarchivo.DataBind();
            ddltipoarchivo.Items.Insert(0, "-- Seleccionar --");
            EUsuario usuario = (EUsuario)Session["Usuario"];
            if (usuario.PK_IPER_IDPERFIL == 3) { ddltipoarchivo.SelectedValue = "1"; ddltipoarchivo.Enabled = false; } 
        }

        private void CargarHistoricoEstados(string identificacion)
        {
            NProveedor proveedor = new NProveedor();
            System.Data.DataTable dt = proveedor.HistoricoEstadosProveedor(identificacion);
            System.Data.DataView dv = new System.Data.DataView(dt, "", "IFLU_ID_ESTADO ASC", System.Data.DataViewRowState.CurrentRows);
            if (dt.Rows.Count > 0)
            {
                txttipodocumento.Text = dt.Rows[0].ItemArray[dt.Columns.IndexOf("NomTipIdentificacion")].ToString();
                txtnumerodocumento.Text = dt.Rows[0].ItemArray[dt.Columns.IndexOf("NumTipIdentificacion")].ToString();
                txtnombre.Text = dt.Rows[0].ItemArray[dt.Columns.IndexOf("Nombres")].ToString();
                txtemail.Text = dt.Rows[0].ItemArray[dt.Columns.IndexOf("Email")].ToString();
            }

        }

        private void AdjuntarArchivo() 
        {
            string rutadestino = Server.MapPath("~\\Archivos\\").ToString() + txtnombrearchivo.Text;
                fuUbicacion.SaveAs(rutadestino);


                NProveedor proveedor = new NProveedor();
                NArchivo archivo = new NArchivo();

                Byte[] bufferarchvio = Util.GetDocument(rutadestino);

                EUsuario usuario = (EUsuario)Session["Usuario"];

                archivo.PutFile(bufferarchvio, txtnombrearchivo.Text);
                proveedor.AdjuntarArchivo("", txtnombrearchivo.Text, ConfigurationManager.AppSettings["RutaArchivosAdj"].ToString(), ddltipoarchivo.SelectedValue, Request.QueryString["idproveedor"].ToString(),txtfechacaducidad.Text,usuario.VUSU_USER_NAME,ddlorigenarchivo.SelectedValue);

                Util.DeleteDocument(rutadestino);

                //Si el Usuario es Homologador
                if (usuario.PK_IPER_IDPERFIL == 3)
                {
                    if (rbcerticado.Items[0].Selected)
                    { 
                        proveedor.ProveedorEstableNoEstable(Constanst.ProveedorHomologado, "Se adjuntó el certificado de homologación", txtnumerodocumento.Text);

                        NFormatCorreo formatocorreo = new NFormatCorreo();
                        System.Data.DataTable dtformatocorreo = formatocorreo.MostrarFormato(4);
                        string asunto = dtformatocorreo.Rows[0].ItemArray[dtformatocorreo.Columns.IndexOf("VFOR_DESCRIPCION_CORREO")].ToString();
                        string body = dtformatocorreo.Rows[0].ItemArray[dtformatocorreo.Columns.IndexOf("VFOR_DETALLE_CORREO")].ToString();

                        NCorreo correo = new NCorreo();
                        correo.EnviarCorreo(txtemail.Text, asunto, body);
                        //Util.EnviarCorreo(txtemail.Text, asunto, body);
                    }
                    else
                    { 
                        proveedor.ProveedorEstableNoEstable(Constanst.ProveedorEstable, "Se adjuntó el documento, no esta certificado", txtnumerodocumento.Text);

                        NFormatCorreo formatocorreo = new NFormatCorreo();
                        System.Data.DataTable dtformatocorreo = formatocorreo.MostrarFormato(5);
                        string asunto = dtformatocorreo.Rows[0].ItemArray[dtformatocorreo.Columns.IndexOf("VFOR_DESCRIPCION_CORREO")].ToString();
                        string body = dtformatocorreo.Rows[0].ItemArray[dtformatocorreo.Columns.IndexOf("VFOR_DETALLE_CORREO")].ToString();
                        NCorreo correo = new NCorreo();
                        correo.EnviarCorreo(txtemail.Text, asunto, body);
                        //Util.EnviarCorreo(txtemail.Text, asunto, body);
                    }
                   
                }
                else
                {
                    //El Comprador si adjunta un certificado de homologacion automaticamente cambia el estado del proveedor a Homologado
                    if (int.Parse(ddltipoarchivo.SelectedValue) == 1)
                    { proveedor.ProveedorEstableNoEstable(Constanst.ProveedorHomologado, "Comprador adjuntó certificado de homologación", txtnumerodocumento.Text); }
                    if (int.Parse(ddltipoarchivo.SelectedValue) == 2)
                    { proveedor.ProveedorEstableNoEstable(Constanst.ProveedorCorporativo, "Comprador adjuntó un acuerdo corporativo", txtnumerodocumento.Text); }
                }

                //Server.Transfer("wBusqProveedor.aspx?solicitud=" + Constanst.Solicitud_AdjuntarArchivo);
                
        }

        private void LimpiarCampos() 
        {
            txtnombrearchivo.Text = string.Empty;
            ddltipoarchivo.SelectedIndex=0;
            txtfechacaducidad.Text = string.Empty;
            ddlorigenarchivo.SelectedIndex = 0;
        }

        private void CargarEmpresasOrigen() 
        {
            NGenerico empresa = new NGenerico();
            ddlorigenarchivo.DataSource=  empresa.ListarEmp_Centria();
            ddlorigenarchivo.DataTextField = "VCEN_DESC_EMPRESA_CENTRIA";
            ddlorigenarchivo.DataValueField = "VCEN_COD_EMPRESA_CENTRIA";
            ddlorigenarchivo.DataBind();
            ddlorigenarchivo.Items.Insert(0,new ListItem("-- Seleccionar --",""));
            ddlorigenarchivo.SelectedValue = "C0018";
        }

        #endregion

        protected void btnlimpiar_Click(object sender, EventArgs e)
        {
            LimpiarCampos();
        }
    }
}